ATM-POLICY-CONSTRAINT-MIB DEFINITIONS ::= BEGIN

IMPORTS
        MODULE-IDENTITY, OBJECT-TYPE, Integer32,
        enterprises
                FROM SNMPv2-SMI
        TEXTUAL-CONVENTION, RowStatus, DisplayString
                FROM SNMPv2-TC
        MODULE-COMPLIANCE, OBJECT-GROUP
                FROM SNMPv2-CONF;


atmPolicyConstraintMIB MODULE-IDENTITY
    LAST-UPDATED    "200307080000Z"
    ORGANIZATION    "The ATM Forum."
    CONTACT-INFO
        "The ATM Forum
        2570 West El Camino Real, Suite 304
        Mountain View, CA 94040-1313 USA
        Phone: +1 650-949-670
        Fax:   +1 415-949-6705
        info@atmforum.com"
    DESCRIPTION
        "The MIB module for Policy Contraints of ATM Forum
        Policy Routing.

        The Policy Constraint MIB is organized as two main tables:
        the policyConstraintTable and the policyTable.  

        The policyConstraintTable provides the entries that 
        can be referenced by other MIB objects to utilize
        a policy constraint.  Each entry in the table contains a set of
        up to six pointers into the policyTable.  The policyTable 
        specifies the operators of a policy.  Associated with the 
        policyTable are the policyNeNscTable and the policyRpNscTable.
        These two tables contain the lists of NSCs on which the 
        policy operators operate.

        To create a policy, the management station should first
        create an associated instance of the row status in a
        policyEntry, using a value of policyIndex that
        is not currently in use.  The object policyNextPolicyIndex
        can be read to get an available policyIndex.  
        It must also, either in the same or in successive PDUs,
        create the associated instances of the Ne-NSC and 
        Rp-NSC lists for the policyIndex.  It should also 
        specify the values for the policy operators.  

        Once the appropriate instance of all the configuration
        objects have been created for the policyEntry,
        policyRpNscEntry, and the policyNeNscEntry (as appropriate),
        the row status of the policyEntry should be set to active
        to activate the policy.

        The policy constraint table can include pointers to 
        policies that are notReady but they must exist.  
        If such a policy constraint is used for a call establishment
        request, then that policy is not used in the signaled
        policy constraint.
        "
    REVISION        "200307080000Z"
    DESCRIPTION
        "Initial version of the MIB for Policy Constraints."
    ::= { atmfPolicyConstraint 1 }

atmForum        OBJECT IDENTIFIER ::= { enterprises 353 }

atmForumNetworkManagement  OBJECT IDENTIFIER ::= { atmForum 5 }

atmfSignalling   OBJECT IDENTIFIER ::= { atmForumNetworkManagement 9 }

atmfPolicyConstraint  OBJECT IDENTIFIER 
                      ::= { atmfSignalling 5 }

policyConstraintMIBObjects  OBJECT IDENTIFIER
                      ::= { atmPolicyConstraintMIB 1 }



-- Textual Conventions

NetworkEntityNetworkServiceCategory ::= TEXTUAL-CONVENTION
    STATUS     current
    DESCRIPTION 
        "A Network Entity Network Service Category (Ne-NSC)
        is a Network Service Category (NSC) that applies
        to the entire network entity (including all resources)
        and advertises properties of the network entity.  The
        term network entity refers to a horizontal link, an 
        uplink, a node, a spoke, a bypass or a set of reachable 
        ATM addresses.
        
        Ne-NSC identifier values within the range 65000 
        through 65535, inclusive, are well known Ne-NSCs.  
        The semantics of well-known Ne-NSCs are defined by 
        the ATM Forum.
        
        The distinguished value of 65536 is used to indicate
        an invalid value and is used to remove Ne-NSC entries
        from Ne-NSC lists."
    REFERENCE
        "ATMF Policy Routing Version 1.0"
    SYNTAX     Integer32 (1..65536)

ResourcePartitionNetworkServiceCategory ::= TEXTUAL-CONVENTION
    STATUS     current
    DESCRIPTION 
        "A Resource Partition NSC (Rp-NSC) is an NSC that applies
        to a resource partition of a network entity.  Note that
        association of a set of Rp-NSCs to a resource partition
        mandates that connections specify at least one of these
        Rp-NSCs as part of their associated policy in order to
        have access to resources of that partition.  Those 
        resources are then used to determine whether the resource
        partition is acceptable for carrying a given connection.
        
        The Rp-NSC Identifier value 0 is referred to as Rp-NSC_Bare
        and identifies bare resources.  Rp-NSC identifier values 
        within the range 65000 through 65535, inclusive, are well
        known Ne-NSCs.  The semantics of well-known Ne-NSCs are 
        defined by the ATM Forum.
        "

    REFERENCE
        "ATMF Policy Routing Version 1.0"
    SYNTAX     Integer32 (0..65535)

PolicyConstraintIndex ::= TEXTUAL-CONVENTION
    STATUS     current
    DESCRIPTION 
        "The value of this object identifies a row in the 
        policyConstraintTable.  This row identifier can
        be used within other MIBs to apply a policy constraint
        to a connection establishment request.  The distinguished 
        value zero signifies that no row has been identified.
        
        The maximum value for this index is controlled by the 
        policyConstraintMaxium object.
        The distinguished value of 0 is used to indicate
        an invalid value."
    SYNTAX     Integer32 (0..65535)

PolicyConstraintPolicyIndex ::= TEXTUAL-CONVENTION
    STATUS     current
    DESCRIPTION 
        "The value of this object identifies the position of 
        a policy with a policy constraint.  The policies are
        applied in the order of 1 first and 6 last."
    SYNTAX     Integer32 (1..6)


PolicyIndex ::= TEXTUAL-CONVENTION
    STATUS     current
    DESCRIPTION 
        "The value of this object identifies a row in the 
        policyTable.  It is used within the 
        policyConstraintTable to identify which policy is
        in use in the policy constraint.  The distinguished value zero 
        signifies that no policy is defined."
    SYNTAX     Integer32 (0..65535)

PolicyOperator ::= TEXTUAL-CONVENTION
    STATUS     current
    DESCRIPTION 
        "The value of this object identifies a row in the 
        policyNeNscTable.  It is used to distinguish between the 
        Ne-NSC list used for a require and the must avoid part
        of a policy."
    SYNTAX     INTEGER {
                          requires(1),
                          mustAvoid(2)
                          }


policyConstraintBaseGroup OBJECT IDENTIFIER ::= { policyConstraintMIBObjects 1 }

policyConstraintMaximum OBJECT-TYPE
    SYNTAX     Integer32 (0..65535)
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
        "The maximum number of concurrent active policy constraints
        that are allowed by the agent.  A value of 0 for this
        object implies that there is no limit on the number of
        concurrent active policy constraints."
    ::= { policyConstraintBaseGroup 1 }

policyMaximum OBJECT-TYPE
    SYNTAX     Integer32 (0..65535)
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
        "The maximum number of concurrent active policies
        that are allowed by the agent.  A value of 0 for this
        object implies that there is no limit on the number of
        concurrent active policies."
    ::= { policyConstraintBaseGroup 2 }

policyNeNSCListMaximum OBJECT-TYPE
    SYNTAX     Integer32 (0..65535)
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
        "The maximum number of Ne-NSCs that can be included
        in the Ne-NSC list of a policy.  A value of 0 for this
        object implies that there is no limit."
    ::= { policyConstraintBaseGroup 3 }

policyRpNSCListMaximum OBJECT-TYPE
    SYNTAX     Integer32 (0..65535)
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
        "The maximum number of Rp-NSC entries that can be included
        in the Rp-NSC list of a policy.  A value of 0 for this
        object implies that there is no limit."
    ::= { policyConstraintBaseGroup 4 }


policyConstraintGroup OBJECT IDENTIFIER 
                       ::= { policyConstraintMIBObjects 2 }

policyNextPolicyConstraintIndex OBJECT-TYPE
    SYNTAX      PolicyConstraintIndex
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Coordinate policyConstraintIndex value allocation for
        entries in the policyConstraintTable.
        A GET of this object returns the next available 
        policyConstraintIndex to be used to create an entry in the
        policyTable; or zero if no valid policyIndex value 
        is available.  This object also returns a value of zero
        when it is the lexicographic successor of a varbind 
        presented in an SNMP GETNEXT or GETBULK request, for which
        circumstance it is assumed that policyConstraintIndex 
        allocation is unintended.  

        Successive GETs will typically return different values,
        Thus avoiding collisions among cooperating management
        clients seeking to create table entries simultaneously."
    ::= { policyConstraintGroup 1 }

policyConstraintTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PolicyConstraintEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The table whose entries describe the policy constraints
        configured in the agent."
    ::= { policyConstraintGroup 2}

policyConstraintEntry OBJECT-TYPE
    SYNTAX     PolicyConstraintEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "Each entry in this table specifies a policy constraint.
        The policy constraint consists of up to 6 policies.  
        A policy constraint must contain at least one policy
        if it is to be used in another MIB object.
        
        The order of the policies within the policy constraint 
        is important and defines the order in which the policies
        are to be applied during path selection and call 
        establishment.
        
        If a policy is specified in the policy constraint, but that
        policy does not exist as an active row of the policyTable,
        then that policy is ignored when the policy constraint is used 
        for call establishment."

    INDEX      { policyConstraintIndex,
                 policyConstraintPolicyIndex}
    ::= { policyConstraintTable 1 }

PolicyConstraintEntry ::=
    SEQUENCE {
          policyConstraintIndex          PolicyConstraintIndex,
          policyConstraintPolicyIndex    PolicyConstraintPolicyIndex,
          policyIndex                    PolicyIndex,
          policyConstraintRowStatus      RowStatus
    }

policyConstraintIndex OBJECT-TYPE
    SYNTAX     PolicyConstraintIndex 
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "An arbitrary integer uniquely identifying a policy 
        constraint.  Its value can be used within other managed 
        objects to apply a policy constraint to the object."
    ::= { policyConstraintEntry 1 }

policyConstraintPolicyIndex OBJECT-TYPE
    SYNTAX     PolicyConstraintPolicyIndex 
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "An integer uniquely identifying a policy 
        within a policy constraint.  The value of this
        index defines the order in which the policies
        of the policy constraint are applied."
    ::= { policyConstraintEntry 2 }

policyIndex OBJECT-TYPE
    SYNTAX     PolicyIndex
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "The index into the policyTable for the policy 
        to be used in a given position within the 
        the policy constraint.  There must be an entry
        in the policyTable for this policy index 
        or the set is rejected.

        The distinguished value of zero may be used to indicate
        no policy is to be used in the position."
    ::= { policyConstraintEntry 3 }

policyConstraintRowStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "To create, delete, activate and de-activate a row 
        of a policy constraint.
        Only those rows of the PolicyConstraintTable that have
        an active status are considered when the policyConstraintIndex
        is used for call establishment.
        "
    ::= { policyConstraintEntry 4 }


policyConstraintNameTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PolicyConstraintNameEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The table whose entries define the names for the policy
        constraints."
    ::= { policyConstraintGroup 3}

policyConstraintNameEntry OBJECT-TYPE
    SYNTAX     PolicyConstraintNameEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "Each entry in this table specifies a name of a 
        policy constraint."
    INDEX      { policyConstraintIndex }
    ::= { policyConstraintNameTable 1 }

PolicyConstraintNameEntry ::=
    SEQUENCE {
          policyConstraintName               DisplayString,
          policyConstraintNameRowStatus      RowStatus
    }

policyConstraintName OBJECT-TYPE
        SYNTAX        DisplayString
        MAX-ACCESS    read-create
        STATUS        current
        DESCRIPTION
            "The name of the Policy Constraint.  This is used 
            to facilitate management of the policy constraints
            between SNMP and other management interfaces."
        DEFVAL { "" }
        ::= { policyConstraintNameEntry 1 }

policyConstraintNameRowStatus OBJECT-TYPE
        SYNTAX        RowStatus
        MAX-ACCESS    read-create
        STATUS        current
        DESCRIPTION
            "To create, delete, activate and de-activate a name 
            of a policy constraint."
        ::= { policyConstraintNameEntry 2 }


policyGroup OBJECT IDENTIFIER ::= { policyConstraintMIBObjects 3 }

policyNextPolicyIndex OBJECT-TYPE
    SYNTAX      PolicyIndex
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Coordinate policyIndex value allocation for entries in
        policyTable.
        A GET of this object returns the next available policyIndex
        to be used to create an entry in the policyTable; or zero if
        no valid policyIndex value is available.  This object also
        returns a value of zero when it is the lexicographic 
        successor of a varbind presented in an SNMP GETNEXT or 
        GETBULK request, for which circumstance it is assumed
        that policyIndex allocation is unintended.

        Successive GETs will typically return different values,
        Thus avoiding collisions among cooperating management
        clients seeking to create table entries simultaneously."
    ::= { policyGroup 1 }

policyTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PolicyEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The table whose entries describe the policies 
        configured. 
        
        Each policy contains two possible policy operators:
        'require' and 'must avoid'.  The require policy 
        operator can be applied with an Ne-NSC list, an Rp-NSC
        list or both.  The must avoid policy operator can
        be applied with only an Ne-NSc list.
        
        In order to create a new policy, the policyRowStatus
        should be set to createAndWait.  The status should 
        not be set to active until the remaining objects 
        of the entry have been specified.
        
        If an existing entry is to be modified, then the RowStatus
        should be set to notInService, the objects modified, 
        and then the RowStatus set to active.
        
        If the RowStatus is set to indicate that the entry
        is to become active (CreateAndGo or Active), then the
        following rules are checked:
          1) At least one of requireNeNscOperator or
             requireRpNscOperator or mustAvoidNeNscOperator
             must be specified.
          2) If the requireNeNscOperator is specified, 
             then at least one Ne-NSC value must 
             exist in an active row of the policyNeNscTable for this 
             policyIndex and an policyOperator of require.
          3) If the requireRpNscOperator is specified, 
             then at least one Rp-NSC value must 
             exist in an active row of the policyRpNscTable for this 
             policyIndex.
          4) If the mustAvoidNeNscOperator is specified, 
             then at least one Ne-NSC value must 
             exist in an active row of the policyNeNscTable for this 
             policyIndex and an policyOperator 
             of mustAvoid.
        If a row is deleted from this table, then the corresponding 
        rows of the policyNeNscTable and policyRpNscTable are also
        deleted.  In addition, any entries in the policyConstraintTable
        that reference this policyIndex are removed.  "

    ::= { policyGroup 2}

policyEntry OBJECT-TYPE
    SYNTAX     PolicyEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "An entry representing a policy."
    INDEX      { policyIndex }
    ::= { policyTable 1 }

PolicyEntry ::=
    SEQUENCE {
          policyName                     DisplayString,
          requireNeNscOperator           INTEGER,
          requireRpNscOperator           INTEGER,
          mustAvoidNeNscOperator         INTEGER,
          policyRowStatus                RowStatus
    }

policyName OBJECT-TYPE
    SYNTAX        DisplayString
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "A textual string describing the policy.  This is used 
        to facilitate management of the policies
        between SNMP and other management interfaces."
    DEFVAL { "" }
    ::= { policyEntry 1 }

requireNeNscOperator OBJECT-TYPE
    SYNTAX     INTEGER {
                        noop(1),
                        logicalAND(2),
                        logicalOR(3)
                       }
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "An integer identifying the NSC List operator
        for the Ne-NSC list of the require policy operator.
        The policy operator singleNeNsc is assumed if only one Ne-NSC
        is specified in the associated Ne-NSC list. "
    DEFVAL  { noop }
     ::= { policyEntry 2 }

requireRpNscOperator OBJECT-TYPE
    SYNTAX     INTEGER {
                        noop(1),
                        logicalAND(2),
                        logicalOR(3)
                       }
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "An integer identifying the NSC List operator
        for the Rp-NSC list of the require policy operator.
        The policy operator singleRpNsc is assumed if only one Rp-NSC
        is specified in the associated Ne-NSC list. "
    DEFVAL  { noop }
     ::= { policyEntry 3 }

mustAvoidNeNscOperator OBJECT-TYPE
    SYNTAX     INTEGER {
                        noop(1),
                        logicalAND(2),
                        logicalOR(3)
                       }
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "An integer identifying the NSC List operator
        for the Ne-NSC list of the must avoid policy operator.
        The policy operator singleNeNsc is assumed if only one Ne-NSC
        is specified in the associated Ne-NSC list. "
    DEFVAL  { noop }
     ::= { policyEntry 4 }

policyRowStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "Used to create and delete entries in this table.
        When a new entry is being created or an existing 
        entry is being modified, then the RowStatus 
        should be set to createAndWait or notInService.  Once
        the objects for this row have been set, then the RowStatus 
        should be set to active.  When a row is active, it can be
        used in a policy constraint to effect the establishment
        of a call.  If a policy is used in a policy constraint

        while it is not active, then it shall be ignored 
        during call establishment."

    ::= { policyEntry 5 }


policyNeNscTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PolicyNeNscEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The table whose entries describe the NeNSCs of the Ne-NSC lists
        of a policy."
    ::= { policyGroup 3}

policyNeNscEntry OBJECT-TYPE
    SYNTAX     PolicyNeNscEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "An entry representing the Ne-NSC list for a policy."
    INDEX      { policyIndex,
                 policyOperator,
                 policyNeNscIndex }
    ::= { policyNeNscTable 1 }

PolicyNeNscEntry ::=
    SEQUENCE {
          policyNeNscIndex               Integer32,
          policyOperator                 PolicyOperator,
          policyNeNsc      NetworkEntityNetworkServiceCategory,
          policyNeNscRowStatus           RowStatus
    }

policyNeNscIndex OBJECT-TYPE
    SYNTAX     Integer32 (1..65535)
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "An integer identifying the NeNSC within the Ne_NSC list
        of a policy."
    ::= { policyNeNscEntry 1 }

policyOperator OBJECT-TYPE
    SYNTAX     PolicyOperator
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "An integer identifying whether the Ne-NSC list
        is part of the require or must avoid operator
        of a policy."
    ::= { policyNeNscEntry 2 }


policyNeNsc OBJECT-TYPE
    SYNTAX     NetworkEntityNetworkServiceCategory
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "One of the Ne-NSCs of the Ne-NSC list of the policy.
        The policyNeNscOperator object defines how the list
        is to be used by the policy.
        Setting this object with a value of 65536 is equivalent
        to deleting the object.  Deleting the object will fail 
        if there are no other policyNeNsc objects with the same
        policyIndex and policyOperator and the policyRowStatus
        object for the policyIndex has the value active"
    ::= { policyNeNscEntry 3 }

policyNeNscRowStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "Used to create and delete entries in this table.
        When a new entry is being created or an existing 
        entry is being modified, then the RowStatus 
        should be set to createAndWait or notInService.  Once
        the objects for this row have been set, then the RowStatus 
        should be set to active.  When a row is active, it can be
        used in a policy to effect the establishment
        of a call.  If a policyNeNscEntry is used in a policy 
        while it is not active, then it shall be ignored 
        during the application of the policy."

    ::= { policyNeNscEntry 4 }


policyRpNscTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PolicyRpNscEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The table whose entries describe the RpNSCs of the Rp-NSC list
        of a policy."
    ::= { policyGroup 4}

policyRpNscEntry OBJECT-TYPE
    SYNTAX     PolicyRpNscEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "An entry representing the Ne-NSC list for a policy."
    INDEX      { policyIndex,
                 policyRpNscIndex }
    ::= { policyRpNscTable 1 }

PolicyRpNscEntry ::=
    SEQUENCE {
          policyRpNscIndex               Integer32,
          policyRpNsc      ResourcePartitionNetworkServiceCategory,
          policyRpNscRowStatus           RowStatus
    }

policyRpNscIndex OBJECT-TYPE
    SYNTAX     Integer32 (1..65535)
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "An integer identifying the RpNSC within the Rp_NSC list
        of a policy."
    ::= { policyRpNscEntry 1 }


policyRpNsc OBJECT-TYPE
    SYNTAX     ResourcePartitionNetworkServiceCategory
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "One of the Rp-NSCs of the Rp-NSC list of the policy.
        The policyRpNscOperator object defines how the list
        is to be used by the policy.
        Setting this object with a value of 65536 is equivalent
        to deleting the object.  Deleting the object will fail 
        if there are no other policyRpNsc objects with the same
        policyIndex and the policyRowStatus
        object for the policyIndex has the value active"
    ::= { policyRpNscEntry 2 }

policyRpNscRowStatus OBJECT-TYPE
    SYNTAX     RowStatus
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "Used to create and delete entries in this table.
        When a new entry is being created or an existing 
        entry is being modified, then the RowStatus 
        should be set to createAndWait or notInService.  Once
        the objects for this row have been set, then the RowStatus 
        should be set to active.  When a row is active, it can be
        used in a policy to effect the establishment
        of a call.  If a policyRpNSC Entry is used in a policy
        while it is not active, then it shall be ignored 
        during the application of that policy"

    ::= { policyRpNscEntry 3 }


policyReferenceTable OBJECT-TYPE
    SYNTAX     SEQUENCE OF PolicyReferenceEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "This table provides pointers to entries in the 
        policyConstraintTable that reference the policyIndex.  

        This is provided to facilitate management of the 
        policies and policy constraints.
        "

    ::= { policyGroup 5}

policyReferenceEntry OBJECT-TYPE
    SYNTAX     PolicyReferenceEntry
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "An entry for the policy reference table.
        "
    INDEX      { policyIndex,
                 policyConstraintIndex }
    ::= { policyReferenceTable 1 }

PolicyReferenceEntry ::=
    SEQUENCE {
          policyReferencePCIndex         PolicyConstraintIndex
    }

policyReferencePCIndex OBJECT-TYPE
    SYNTAX     PolicyConstraintIndex
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "If any of the entries of the PolicyConstraintTable 
        for the specified policyConstraintIndex has a value 
        for its policyIndex that matches the policyIndex 
        of this entry, then this returns the 
        policyConstraintIndex; otherwise, the value zero is 
        returned.  
        
        This object should be walked using GETNEXT
        and specifying an initial value of zero for the 
        policyConstraintIndex.  If a value of zero is returned,
        then there are no more matching entries for the policyIndex.
        "
    ::= { policyReferenceEntry 1 }




-- conformance information

policyConstraintMIBConformance
        OBJECT IDENTIFIER ::= { policyConstraintMIBObjects 4 }

policyConstraintMIBCompliances
        OBJECT IDENTIFIER ::= { policyConstraintMIBConformance 1 }

policyConstraintMIBGroups
        OBJECT IDENTIFIER ::= { policyConstraintMIBConformance 2 }

-- compliance statements

policyConstraintMIBCompliance MODULE-COMPLIANCE
    STATUS     current
    DESCRIPTION
        "The compliance statement for entities which implement the
        Policy Routing Addendum for Policy Constraint MIB.

        Groups of objects required to support certain functionality
        are identified by the suffix MandatoryGroup.

        Groups of optional objects are identified by the suffix
        OptionalGroup."
    MODULE     -- this module
    MANDATORY-GROUPS
        { policyConstraintMIBMandatoryGroup
          }

--PSIM     GROUP atmTraceConnAndPathFilterMandatoryGroup2
    GROUP policyConstraintMIBOptionalGroup
    DESCRIPTION
        "Required if connection trace or path trace using
        filtering of new connection and party establishment messages
        is supported."

    ::= { policyConstraintMIBCompliances 1 }

-- units of conformance

policyConstraintMIBMandatoryGroup  OBJECT-GROUP
    OBJECTS {
              policyConstraintMaximum,
              policyMaximum,
              policyNeNSCListMaximum,
              policyRpNSCListMaximum,
              policyIndex,
              policyConstraintRowStatus,
              requireNeNscOperator,
              requireRpNscOperator,
              mustAvoidNeNscOperator,
              policyRowStatus,
              policyNeNsc,
              policyNeNscRowStatus,
              policyRpNsc,
              policyRpNscRowStatus
              }
    STATUS    current
    DESCRIPTION
        "A collection of objects required when policy constraint
        specification is supported."
    ::= { policyConstraintMIBGroups 1 }

policyConstraintMIBOptionalGroup  OBJECT-GROUP
    OBJECTS { 
              policyNextPolicyConstraintIndex,
              policyConstraintName,
              policyConstraintNameRowStatus,
              policyNextPolicyIndex,
              policyName,
              policyReferencePCIndex
              }
    STATUS    current
    DESCRIPTION
        "A collection of optional objects used for path and connection
        trace."
    ::= { policyConstraintMIBGroups 2 }

END